导航菜单
首页 >  3D 绘图  > 绘制三维地形图

绘制三维地形图

绘制三维地形图示例贡献者:

刘珠妹(作者)、陈箫翰(修订)

视频讲解:

https://www.bilibili.com/video/BV1Xh411e7fi/

绘制三维地形图的核心是 grdview 模块以及 -JZ 选项。使用 -JZ 选项设置 Z 方向上的缩放比例,同时也必须在 -R 选项中设置 Z 方向上的最小值和最大值。此外,-p 选项用于设置三维观察的视角。

本例将展示如何绘制三维起伏地形图,并叠加卫星图像图层与地震断层图层,用于对比研究。请点击观看视频学习代码的详细讲解。

示例中使用到的数据包括:

@earth_relief_06m:earth_relief

@earth_day_06m:earth_day & earth_night

CN-faults.gmt:/dataset-CN/CN-faults

下面的绘图脚本将三维地形、卫星图片以及断层线绘制在不同高度:

#!/usr/bin/env bash# 将三维地形、卫星图片以及断层线绘制在不同高度gmt begin 3D_earth_relief_1gmt set MAP_FRAME_TYPE plain# 1. 绘制地形图形,图层默认位于 z 轴底部(此例中即 -1000 的高度)gmt grdview @earth_relief_06m -R101/108/35/42/-1000/20000 -JM10c -JZ10c -N-1000+ggray -Qi -I -Ba -BwsENZ -p60/25gmt colorbar -C -Ba -DJTC+o0/1c -p# 2. 绘制断层线图层,-p 设置图层抬高到10000 gmt plot CN-faults.gmt -W2p,brown -p60/25/10000 -Ba -BWSengmt basemap -TdjLT+w1.5c+l+o1c -p# 3. 绘制卫星图片图层,-p 设置图层抬高到20000gmt grdimage @earth_day_06m -p60/25/20000 -Ba -BWSengmt end show../../_images/07e898d09ca97ab9dbe1a6ae3a3311ed.png

下面的脚本将卫星图片和断层线直接绘制在三维地形上:

#!/usr/bin/env bash# 将卫星图片和断层线直接绘制在三维地形上gmt begin 3D_earth_relief_2gmt set MAP_FRAME_TYPE plain# 预处理1:生成断层的三维采样,输出数据为断层的经度、纬度以及对应的地形高程gmt grdtrack -R101/108/35/42 -G@earth_relief_06m CN-faults.gmt > faults.xyz# 预处理2:截取区域卫星图片# 下载 6 弧分的卫星图片数据 earth_day_06m_p 到当前目录gmt which -Gl @earth_day_06m_p# 使用 gdal_translate 截取区域的卫星图片# -projwin 后的四个参数指定了区域范围:左上角经度 左上角纬度 右下角经度 右下角纬度# gdal_translate 的详细用法见 https://gdal.org/programs/gdal_translate.htmlgdal_translate -of GTIFF -projwin 101 42 108 35 earth_day_06m_p.tif day.tif# 绘制卫星图片,-G 表示在 DEM 上贴卫星图片gmt grdview @earth_relief_06m -R101/108/35/42/-1000/5000 -JM10c -JZ4c -N-1000+ggray -Gday.tif -Qi -Ba -Bz -BwsENZ -p60/25# 绘制断层线gmt plot3d faults.xyz -W1p,brown -p# 绘制色标gmt colorbar -C -Ba -DJTC+o0/1c -p# 绘制底图(含指北针)gmt basemap -TdjLT+w1.5c+l+o1c -p60/25/2000rm day.tif faults.xyz earth_day_06m_p.tifgmt end show../../_images/116c7b68ca8c491adade37c19a9a9b62.png

除了 GMT 自带的卫星图像数据以外,读者还可以使用开源工具导出精度更高的谷歌卫星图像,并用于 GMT 绘图。导出方法可以参考 以地图和卫星图为底图 。在下面的例子中,grdview 模块将合肥地区卫星图像 Hefei.tiff 叠加在三维地形图上,绘制出了清晰度更高的图片。卫星图像适用于作图范围较小的情况。

gmt begin Hefei jpg E600gmt grdview @earth_relief_30s -R117/118/31.4/32/0/2000 -JM10c -JZ2c -Qi600 -GHefei.tiff -p135/15 -Bafgmt endhttps://user-images.githubusercontent.com/26203721/185333355-a57cdc9b-8327-4721-9304-5867ab3b629a.jpg

相关推荐: